<?php

use core\lib\log;
use core\lib\model;

function p($var)
{
    if (is_bool($var)) {
        var_dump($var);
    } elseif (is_null($var)) {
        var_dump(NULL);
    } else {
        echo "<pre style='position: relative;z-index: 19930312;padding: 10px;border-radius: 5px;background-color: #F5F5F5;border: 1px solid #aaa;font-size: 14px;line-height: 18px;opacity: 0.9;'>" . print_r($var, true) . "</pre>";
    }
}

function success(string $msg, array $data = [], $log = ''): array
{
    if (!empty($log)) {
        log_success($log);
    }

    return ['code' => '1001', 'msg' => $msg, 'data' => $data];
}

function error($msg, $data, $log = '', $code = '1002')
{
    if (!empty($log)) {
        log_error($log);
    }

    return ['code' => $code, 'msg' => $msg, 'data' => $data];
}

function log_success($message)
{
    log::log_success($message);
}

function log_error($message)
{
    log::log_error($message);
}

/**
 * @param string $table 表名
 * @param string|array $fields 表字段名
 * @param string|array $where 搜索条件
 * @param bool $debug 调试模式
 * @return Array|String
 */
function select($table, $fields, $where, $debug = false)
{
    $db = new model();
    $res = $db;
    if ($debug) {
        $res = $res->debug();
    }
    return $res->select($table, $fields, $where);
}

/**
 * @param string $table 表名
 * @param string|array $fields 表字段名
 * @param string|array $where 搜索条件
 * @param bool $debug 调试模式
 * @return Array|String
 */
function find($table, $fields, $where, $debug = false)
{
    $db = new model();
    $res = $db;
    if ($debug) {
        $res = $res->debug();
    }
    return $res->get($table, $fields, $where);
}

/**
 * @param string $table 表名
 * @param Array|String $data 要插入的数据
 * @param bool $debug 调试模式
 * @return
 */
function insert($table, $data, $debug = false)
{
    $db = new model();
    if ($debug) {
        $res = $db->debug()->insert($table, $data);
        return $res;
    }

    $db->pdo->beginTransaction();
    try {

        $db->pdo->commit();
    } catch (Exception $e) {
        $db->pdo->rollBack();
        $db_log = $db->log();
        array_push($db_log, [$e->getMessage()]);
        error('失败', '', $db_log);
    }
    success('成功', ['id' => $db->id()]);
}

/**
 * @param $table
 * @param $data
 * @param $where
 * @param false $debug
 * @throws Exception
 */
function update($table, $data, $where, $debug = false)
{
    $db = new model();
    if ($debug) {
        $res = $db->debug()->update($table, $data, $where);
        return $res;
    }

    $db->pdo->beginTransaction();
    try {

        $db->pdo->commit();
    } catch (Exception $e) {
        $db->pdo->rollBack();
        $db_log = $db->log();
        array_push($db_log, [$e->getMessage()]);
        error('失败', '', $db_log);
    }
    success('成功');
}

function delete($table, $where, $debug = false)
{
    $db = new model();
    if ($debug) {
        $res = $db->debug()->delete($table, $where);
        return $res;
    }

    $db->pdo->beginTransaction();
    try {

        $db->pdo->commit();
    } catch (Exception $e) {
        $db->pdo->rollBack();
        $db_log = $db->log();
        array_push($db_log, [$e->getMessage()]);
        error('失败', '', $db_log);
    }
    success('成功');
}

